{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 图像轮廓"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. 图像轮廓简介"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "① 边缘有一些零零散散的线段也可以当做边缘，反正梯度上下左右发生差异，就把它当做边缘了。\n",
    "\n",
    "② 图像的轮廓必须是一个整体，不是零零散散的，而是连在一块的。\n",
    "\n",
    "③ 图像轮廓函数：cv2.findContours(img,mode,method)\n",
    "\n",
    "mode：轮廓检索模式\n",
    "- RETR_EXTERNAL ：只检索最外面的轮廓。\n",
    "- RETR_LIST：检索所有的轮廓，并将其保存到一条链表当中。\n",
    "- RETR_CCOMP：检索所有的轮廓，并将他们组织为两层：顶层是各部分的外部边界，第二层是空洞的边界。\n",
    "- RETR_TREE：检索所有的轮廓，并重构嵌套轮廓的整个层次。( 最常用 )\n",
    "\n",
    "method：轮廓逼近方法\n",
    "- CHAIN_APPROX_NONE：以Freeman链码的方式输出轮廓，如下图左所示。所有其他方法输出多边形 ( 顶点的序列 )，如下图右所示。\n",
    "- CHAIN_APPROX_SIMPLE：压缩水平的、垂直的和斜的部分，也就是，函数只保留他们的终点部分，如下图右所示。\n",
    "\n",
    "④ 为了更高的准确率，轮廓检测使用二值图像。"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2. 绘制轮廓"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.1 图像二值化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import cv2 #opencv的缩写为cv2\n",
    "import matplotlib.pyplot as plt # matplotlib库用于绘图展示\n",
    "import numpy as np   # numpy数值计算工具包\n",
    "\n",
    "# 魔法指令，直接展示图，Jupyter notebook特有\n",
    "%matplotlib inline  \n",
    "\n",
    "def cv_show(img,name):\n",
    "    cv2.imshow(name,img)\n",
    "    cv2.waitKey()\n",
    "    cv2.destroyAllWindows()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "img = cv2.imread('01_Picture/08_Car.png')\n",
    "cv_show(img,'img')\n",
    "gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)\n",
    "ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 大于 17 的取 255，小于 127 的取 0       \n",
    "cv_show(thresh,'thresh')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.2 轮廓检测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2579,)\n",
      "[[[   1   -1   -1   -1]\n",
      "  [   2    0   -1   -1]\n",
      "  [   3    1   -1   -1]\n",
      "  ...\n",
      "  [  -1 2575 2577   -1]\n",
      "  [2578   -1   -1 2576]\n",
      "  [  -1 2577   -1 2576]]]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\11_Anaconda\\envs\\py3.6.3\\lib\\site-packages\\ipykernel_launcher.py:4: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray\n",
      "  after removing the cwd from sys.path.\n"
     ]
    }
   ],
   "source": [
    "# 做完二值后，再用图像轮廓检测函数再去做\n",
    "binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)\n",
    "cv_show(binary,'binary') # 返回的二值化后的图像\n",
    "print(np.array(contours).shape) # 轮廓点的信息\n",
    "print(hierarchy) # hierarchy 是把轮廓结果保存在层级结构当中，暂时用不上"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.3 绘制所有轮廓"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 传入参数：图像、轮廓、轮廓索引(自适应，画所有轮廓)，颜色模式，线条厚度\n",
    "# 注意需要copy，要不原图会变。。。\n",
    "cv_show(img,'img')\n",
    "draw_img = img.copy() # 若不用拷贝后的，而是用原图画轮廓，则画轮廓图绘把原始的输入图像重写，覆盖掉 \n",
    "res = cv2.drawContours(draw_img,contours,-1,(0,0,255),2) \n",
    "cv_show(res,'res')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.4 绘制某个轮廓"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "draw_img = img.copy()\n",
    "res = cv2.drawContours(draw_img,contours,70,(0,0,255),2) # 画 70 号轮廓\n",
    "cv_show(res,'res')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.5 综合展示"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "img = cv2.imread('01_Picture/10_contours.png')\n",
    "gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)\n",
    "ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 大于17的取255，小于127的取0       \n",
    "\n",
    "binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)\n",
    "\n",
    "draw_img = img.copy() # 若不用拷贝后的，而是用原图画轮廓，则画轮廓图绘把原始的输入图像重写，覆盖掉 \n",
    "res = cv2.drawContours(draw_img,contours,3,(0,0,255),2) \n",
    "cv_show(res,'res')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3. 轮廓特征提取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "8500.5\n",
      "437.9482651948929\n"
     ]
    }
   ],
   "source": [
    "img = cv2.imread('01_Picture/10_contours.png')\n",
    "gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)\n",
    "ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 大于17的取255，小于127的取0       \n",
    "\n",
    "binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)\n",
    "\n",
    "cnt = contours[0] # 通过轮廓索引，拿到该索引对应的轮廓特征\n",
    "print(cv2.contourArea(cnt)) # 该轮廓的面积\n",
    "print(cv2.arcLength(cnt,True)) # 该轮廓的周长，True表示闭合的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 4. 轮廓近似"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "① 正常轮廓展示是最右边的图，但是当我们需要轮廓没有那么不规则，而是想要轮廓近似成规则的形状，这就叫轮廓近似，近似成下图中中间图像的轮廓。\n",
    "\n",
    "② 一条呈抛物线的曲线的端点为 A、B 两点，取曲线上到直线 AB 距离最大的点，该点为 C 点，若 C 点到直线的距离小于设置的阈值，则可以把直线 AB 当做曲线的近似，若 C 点到直线的距离大于设置的阈值，那么曲线不能用直线 AB 来近似，而 AC 曲线可能用 AC 直线来代替、BC曲线可能用 BC 直线来代替。再通过阈值来判断是否可以代替。"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.1 正常轮廓展示"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "img = cv2.imread('01_Picture/11_contours2.png')\n",
    "gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)\n",
    "ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 大于17的取255，小于127的取0       \n",
    "\n",
    "binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)\n",
    "\n",
    "draw_img = img.copy() # 若不用拷贝后的，而是用原图画轮廓，则画轮廓图绘把原始的输入图像重写，覆盖掉 \n",
    "res = cv2.drawContours(draw_img,contours,-1,(0,0,255),2) \n",
    "cv_show(res,'res')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.2 轮廓近似展示"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "img = cv2.imread('01_Picture/11_contours2.png')\n",
    "\n",
    "gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)\n",
    "ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 大于17的取255，小于127的取0       \n",
    "binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)\n",
    "cnt = contours[0]\n",
    "\n",
    "draw_img = img.copy()\n",
    "res = cv2.drawContours(draw_img,[cnt],-1,(0,0,255),2) \n",
    "cv_show(res,'res')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "epsilon = 0.1 * cv2.arcLength(cnt,True) # 周长的百分比，这里用 0.1 的周长作阈值\n",
    "approx = cv2.approxPolyDP(cnt,epsilon,True) # 第二个参数为阈值\n",
    "draw_img = img.copy()\n",
    "res = cv2.drawContours(draw_img,[approx],-1,(0,0,255),2)\n",
    "cv_show(res,'res')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5. 外接矩形"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "img = cv2.imread('01_Picture/10_contours.png')\n",
    "\n",
    "gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)\n",
    "ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 大于17的取255，小于127的取0       \n",
    "binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)\n",
    "cnt = contours[6]\n",
    "\n",
    "x,y,w,h = cv2.boundingRect(cnt) # 可以得到矩形四个坐标点的相关信息\n",
    "img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255),2)\n",
    "cv_show(img,'img')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "轮廓面具与边界矩形比： 0.7732441471571906\n"
     ]
    }
   ],
   "source": [
    "area = cv2.contourArea(cnt)\n",
    "rect_area = w * h\n",
    "extent = float(area) / rect_area\n",
    "print('轮廓面具与边界矩形比：',extent)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 6. 外接圆"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "img = cv2.imread('01_Picture/10_contours.png')\n",
    "\n",
    "gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)\n",
    "ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 大于17的取255，小于127的取0       \n",
    "binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)\n",
    "cnt = contours[0]\n",
    "\n",
    "draw_img = img.copy()\n",
    "(x,y),redius = cv2.minEnclosingCircle(cnt)\n",
    "center = (int(x),int(y))\n",
    "redius = int(redius)\n",
    "img = cv2.circle(draw_img,center,redius,(0,255,0),2)\n",
    "cv_show(img,'img')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.6.3",
   "language": "python",
   "name": "python3.6.3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": false,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "250.2px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
